﻿using System;
using System.IO;
using System.Collections.Generic;
using System.Text;

namespace Hsp.WebNovels.Common.Utility
{
    /// <summary>
    /// 文件操作帮助类
    /// </summary>
    public class FileHelper
    {
        #region 删除文件

        /// <summary>
        /// 删除文件
        /// </summary>
        /// <param name="filePath"></param>
        public static void FileDelete(string filePath)
        {
            if (File.Exists(filePath))
            {
                File.Delete(filePath);
            }
        }

        #endregion

        #region 删除目录

        /// <summary>
        ///     删除目录
        /// </summary>
        /// <param name="dir"></param>
        /// <returns></returns>
        public string FolderDelete(string dir)
        {
            if (Directory.Exists(dir)) //如果存在这个文件夹删除之 
            {
                foreach (string d in Directory.GetFileSystemEntries(dir))
                {
                    if (File.Exists(d))
                        File.Delete(d); //直接删除其中的文件 
                    else
                        FolderDelete(d); //递归删除子文件夹 
                }
                Directory.Delete(dir); //删除已空文件夹 
                return dir + " 文件夹删除成功";
            }
            return dir + " 该文件夹不存在"; //如果文件夹不存在则提示 
        }

        #endregion

        #region 将 Stream 转成 byte[]

        /// <summary>
        ///     将 Stream 转成 byte[]
        /// </summary>
        public static byte[] StreamToBytes(Stream stream)
        {
            var bytes = new byte[stream.Length];
            stream.Read(bytes, 0, bytes.Length);

            // 设置当前流的位置为流的开始 
            stream.Seek(0, SeekOrigin.Begin);
            return bytes;
        }

        #endregion

        #region 检查目录，如果目录不存在，则创建该目录

        /// <summary>
        /// 检查目录，如果目录不存在，则创建该目录
        /// </summary>
        /// <param name="dirName">目录名称</param>
        public static void PathCheck(string dirName)
        {
            var directoryName = Path.GetDirectoryName(dirName);
            if (directoryName == null) return;
            string path = directoryName.TrimEnd('\\');
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
        }

        #endregion

        #region 剪切文件

        /// <summary>
        /// 剪切文件
        /// </summary>
        /// <param name="path1">文件地址包含文件名称</param>
        /// <param name="path2">保存位置</param>
        public static void FileMove(string path1, string path2)
        {
            File.Move(path1, path2);
        }

        #endregion
    }
}
